home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_qt.idb / usr / freeware / include / Qt / qdatetime.h.z / qdatetime.h
Encoding:
C/C++ Source or Header  |  1998-10-28  |  6.3 KB  |  195 lines

  1. /****************************************************************************
  2. ** $Id: qdatetime.h,v 2.5 1998/07/03 00:09:43 hanord Exp $
  3. **
  4. ** Definition of date and time classes
  5. **
  6. ** Created : 940124
  7. **
  8. ** Copyright (C) 1992-1998 Troll Tech AS.  All rights reserved.
  9. **
  10. ** This file is part of Qt Free Edition, version 1.40.
  11. **
  12. ** See the file LICENSE included in the distribution for the usage
  13. ** and distribution terms, or http://www.troll.no/free-license.html.
  14. **
  15. ** IMPORTANT NOTE: You may NOT copy this file or any part of it into
  16. ** your own programs or libraries.
  17. **
  18. ** Please see http://www.troll.no/pricing.html for information about 
  19. ** Qt Professional Edition, which is this same library but with a
  20. ** license which allows creation of commercial/proprietary software.
  21. **
  22. *****************************************************************************/
  23.  
  24. #ifndef QDATETIME_H
  25. #define QDATETIME_H
  26.  
  27. #ifndef QT_H
  28. #include "qstring.h"
  29. #endif // QT_H
  30.  
  31.  
  32. /*****************************************************************************
  33.   QDate class
  34.  *****************************************************************************/
  35.  
  36. class QDate
  37. {
  38. public:
  39.     QDate()  { jd=0; }                // set null date
  40.     QDate( int y, int m, int d );        // set date
  41.  
  42.     bool   isNull()     const { return jd == 0; }
  43.     bool   isValid()     const;            // valid date
  44.  
  45.     int       year()     const;            // 1752..
  46.     int       month()     const;            // 1..12
  47.     int       day()     const;            // 1..31
  48.     int       dayOfWeek()     const;            // 1..7 (monday==1)
  49.     int       dayOfYear()     const;            // 1..365
  50.     int       daysInMonth() const;            // 28..31
  51.     int       daysInYear()     const;            // 365 or 366
  52.  
  53.     virtual const char *monthName( int month ) const;
  54.     virtual const char *dayName( int weekday ) const;
  55.  
  56.     QString toString()     const;
  57.  
  58.     bool   setYMD( int y, int m, int d );
  59.  
  60.     QDate  addDays( int days )        const;
  61.     int       daysTo( const QDate & )    const;
  62.  
  63.     bool   operator==( const QDate &d ) const { return jd == d.jd; }
  64.     bool   operator!=( const QDate &d ) const { return jd != d.jd; }
  65.     bool   operator<( const QDate &d )    const { return jd < d.jd; }
  66.     bool   operator<=( const QDate &d ) const { return jd <= d.jd; }
  67.     bool   operator>( const QDate &d )    const { return jd > d.jd; }
  68.     bool   operator>=( const QDate &d ) const { return jd >= d.jd; }
  69.  
  70.     static QDate currentDate();
  71.     static bool     isValid( int y, int m, int d );
  72.     static bool     leapYear( int year );
  73.  
  74. protected:
  75.     static uint     greg2jul( int y, int m, int d );
  76.     static void     jul2greg( uint jd, int &y, int &m, int &d );
  77. private:
  78.     static const char *monthNames[];
  79.     static const char *weekdayNames[];
  80.     uint     jd;
  81.     friend class QDateTime;
  82.     friend QDataStream &operator<<( QDataStream &, const QDate & );
  83.     friend QDataStream &operator>>( QDataStream &, QDate & );
  84. };
  85.  
  86.  
  87. /*****************************************************************************
  88.   QTime class
  89.  *****************************************************************************/
  90.  
  91. class QTime
  92. {
  93. public:
  94.     QTime() { ds=0; }                // set null time
  95.     QTime( int h, int m, int s=0, int ms=0 );    // set time
  96.  
  97.     bool   isNull()     const { return ds == 0; }
  98.     bool   isValid()     const;            // valid time
  99.  
  100.     int       hour()     const;            // 0..23
  101.     int       minute()     const;            // 0..59
  102.     int       second()     const;            // 0..59
  103.     int       msec()     const;            // 0..999
  104.  
  105.     QString toString()     const;
  106.  
  107.     bool   setHMS( int h, int m, int s, int ms=0 );
  108.  
  109.     QTime  addSecs( int secs )        const;
  110.     int       secsTo( const QTime & )    const;
  111.     QTime  addMSecs( int ms )        const;
  112.     int       msecsTo( const QTime & )    const;
  113.  
  114.     bool   operator==( const QTime &d ) const { return ds == d.ds; }
  115.     bool   operator!=( const QTime &d ) const { return ds != d.ds; }
  116.     bool   operator<( const QTime &d )    const { return ds < d.ds; }
  117.     bool   operator<=( const QTime &d ) const { return ds <= d.ds; }
  118.     bool   operator>( const QTime &d )    const { return ds > d.ds; }
  119.     bool   operator>=( const QTime &d ) const { return ds >= d.ds; }
  120.  
  121.     static QTime currentTime();
  122.     static bool     isValid( int h, int m, int s, int ms=0 );
  123.  
  124.     void   start();
  125.     int       restart();
  126.     int       elapsed();
  127.  
  128. private:
  129.     static bool currentTime( QTime * );
  130.  
  131.     uint   ds;
  132.     friend class QDateTime;
  133.     friend QDataStream &operator<<( QDataStream &, const QTime & );
  134.     friend QDataStream &operator>>( QDataStream &, QTime & );
  135. };
  136.  
  137.  
  138. /*****************************************************************************
  139.   QDateTime class
  140.  *****************************************************************************/
  141.  
  142. class QDateTime
  143. {
  144. public:
  145.     QDateTime() {}                // set null date and null time
  146.     QDateTime( const QDate & );
  147.     QDateTime( const QDate &, const QTime & );
  148.  
  149.     bool   isNull()    const        { return d.isNull() && t.isNull(); }
  150.     bool   isValid()    const        { return d.isValid() && t.isValid(); }
  151.  
  152.     QDate  date()    const        { return d; }
  153.     QTime  time()    const        { return t; }
  154.     void   setDate( const QDate &date ) { d=date; }
  155.     void   setTime( const QTime &time ) { t=time; }
  156.     void   setTime_t( uint secsSince1Jan1970UTC );
  157.  
  158.     QString toString()    const;
  159.  
  160.     QDateTime addDays( int days )    const;
  161.     QDateTime addSecs( int secs )    const;
  162.     int       daysTo( const QDateTime & )    const;
  163.     int       secsTo( const QDateTime & )    const;
  164.  
  165.     bool   operator==( const QDateTime &dt ) const;
  166.     bool   operator!=( const QDateTime &dt ) const;
  167.     bool   operator<( const QDateTime &dt )  const;
  168.     bool   operator<=( const QDateTime &dt ) const;
  169.     bool   operator>( const QDateTime &dt )  const;
  170.     bool   operator>=( const QDateTime &dt ) const;
  171.  
  172.     static QDateTime currentDateTime();
  173.  
  174. private:
  175.     QDate  d;
  176.     QTime  t;
  177.     friend QDataStream &operator<<( QDataStream &, const QDateTime & );
  178.     friend QDataStream &operator>>( QDataStream &, QDateTime & );
  179. };
  180.  
  181.  
  182. /*****************************************************************************
  183.   Date and time stream functions
  184.  *****************************************************************************/
  185.  
  186. QDataStream &operator<<( QDataStream &, const QDate & );
  187. QDataStream &operator>>( QDataStream &, QDate & );
  188. QDataStream &operator<<( QDataStream &, const QTime & );
  189. QDataStream &operator>>( QDataStream &, QTime & );
  190. QDataStream &operator<<( QDataStream &, const QDateTime & );
  191. QDataStream &operator>>( QDataStream &, QDateTime & );
  192.  
  193.  
  194. #endif // QDATETIME_H
  195.